//!< 栈实现
/// 栈比较简单，只有压栈push和弹栈pop两个操作。
/// 为了方便实现非递归的快速排序算法，需要栈来实现迭代。
#include "QuickSort.h"

static typeStack Stack;

void initStack() {
	Stack.iMaxDep = MAX_STACKDEP;
	Stack.iIndex = -1; //栈顶索引初始化为-1，表示空栈。
}

int push(typeStackElem sEle) {
	if(Stack.iIndex < Stack.iMaxDep-1) {
		Stack.iIndex++;
		Stack.aStack[Stack.iIndex] = sEle;
		return 0;
	} else
		return -1;
}

typeStackElem pop() {
	if(Stack.iIndex >= 0) {
		return Stack.aStack[Stack.iIndex--];
	}
}

int isEmpty() {
	if(Stack.iIndex < 0) {
		return 1;
	} else
		return 0;
}

//打印栈状态
void printStack(){
    printf("Stack深度：%i, 栈顶：%i\n", Stack.iMaxDep, Stack.iIndex);
    for (int i = 0; i <= Stack.iIndex; i++)
    {
        printf("%i, %i\n", Stack.aStack[i].iL, Stack.aStack[i].iR);

    }
}
